// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ItineraryItem.cs" company="XamlNinja">
//   2011 Richard Griffin and Ollie Riches
// </copyright>
// <summary>
//   ItineraryItem.cs
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace WP7Contrib.Services.BingMaps.Resources.Routes
{
    using System;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    using Resources;

    [JsonObject(MemberSerialization.OptIn)]
    internal sealed class ItineraryItem
    {
        [JsonProperty("childItineraryItems")]
        public IList<ItineraryItem> ChildItineraryItems { get; set; }

        [JsonProperty("compassDirection")]
        public string CompassDirection { get; set; }

        [JsonProperty("details")]
        public IList<Detail> Details { get; set; }

        [JsonProperty("exit")]
        public string Exit { get; set; }

        [JsonProperty("hints")]
        public IList<Hint> Hints { get; set; }

        [JsonProperty("iconType")]
        public string IconType { get; set; }

        [JsonProperty("instruction")]
        public Instruction Instruction { get; set; }

        [JsonProperty("maneuverPoint")]
        public Point ManeuverPoint { get; set; }

        [JsonProperty("sideOfStreet")]
        public string SideOfStreet { get; set; }

        [JsonProperty("signs")]
        public IList<string> Sign { get; set; }

        [JsonProperty("time")]
        public TimeSpan Time { get; set; }

        [JsonProperty("tollZone")]
        public string TollZone { get; set; }

        [JsonProperty("towardsRoadName")]
        public string TowardsRoadName { get; set; }

        [JsonProperty("transitLine")]
        public IList<TransitLine> TransitLine { get; set; }

        [JsonProperty("transitStopId")]
        public int TransitStopId { get; set; }

        [JsonProperty("transitTerminus")]
        public string TransitTerminus { get; set; }

        [JsonProperty("travelDistance")]
        public double? TravelDistance { get; set; }

        [JsonProperty("travelDuration")]
        public double? TravelDuration { get; set; }

        [JsonProperty("travelMode")]
        public string TravelMode { get; set; }

        [JsonProperty("warnings")]
        public IList<Warning> Warnings { get; set; }
    }
}